/*
    编写高阶组件的要求
    1、函数名称以with开头
    2、函数的参数是要渲染的组件，这个参数首字母大写
    3、函数体内编写类组件,并且要将类组件返回
    4、该函数要被外部所使用，所以一定要通过ES6的导出方式将其导出
*/
import React from 'react'
function withMouse(WrapperComponent){
    class Mouse extends React.Component{
        state={
            x:0,
            y:0
        }
        handleMouseMove=(e)=>{
            this.setState({
                x:e.clientX,
                y:e.clientY
            })
        }
        componentDidMount(){
            window.addEventListener('mousemove',this.handleMouseMove)
        }
        componentWillUnmount(){
            window.removeEventListener('mousemove',this.handleMouseMove)
        }     
        render(){
            return <WrapperComponent {...this.state} {...this.props}></WrapperComponent>
        }
    }
    return Mouse
}
export default withMouse